// 导入 http 模块
import http from 'wechat-http'
/**
 * 配置接口基础路径
 */
http.baseURL = 'https://live-api.itheima.net'

/**
 * 配置请求拦截器
 */
http.intercept.request = (params) => {
  // 过滤接口返回的数据
  const app = getApp()
  // 请求头携带token
  if (!!app.token) {
    params.header = {
      Authorization: `Bearer ${app.token}`,
      // 先把之前的header 数据 解构出来
      ...params.header
    }
  }
  return params
}

/**
 * 配置响应拦截器
 */
http.intercept.response = async (res) => {
  //token失效执行
  if (res.statusCode === 401) {
    // 获取app实例
    const app = getApp()
    // 使用refreshToken重新请求token和refreshToken
    const res2 = await http({
      url: '/refreshToken',
      method: 'post',
      header: {
        Authorization: `Bearer ${app.refreshToken}`,
      }
    })
    // 取出新token
    const { token, refreshToken } = res2.data
    // 本地储存
    app.settoken(token, refreshToken)
    return wx.http({
      ...res.config,
      header: {
        Authorization: `Bearer ${token}`,
      }
    })
  }
  // 过滤接口返回的数据
  return res.data
}

/**
 * 挂载方法到全局
 */
wx.http = http
/**
 * 模块导出
 */
export default http